Rendering with point sampling and pre-computed light transport information

ABSTRACT

Rendering system combines point sampling and volume sampling operations to produce rendering outputs. For example, to determine color information for a surface location in a 3-D scene, one or more point sampling operations are conducted in a volume around the surface location, and one or more sampling operations of volumetric light transport data are performed farther from the surface location. A transition zone between point sampling and volume sampling can be provided, in which both point and volume sampling operations are conducted. Data obtained from point and volume sampling operations can be blended in determining color information for the surface location. For example, point samples are obtained by tracing a ray for each point sample, to identify an intersection between another surface and the ray, to be shaded, and volume samples are obtained from a nested 3-D grids of volume elements expressing light transport data at different levels of granularity.

CROSS REFERENCE TO RELATED APPLICATIONS

This application claims priority from U.S. Provisional PatentApplication 61/787,700, filed on Mar. 15, 2014, which is incorporated byreference herein for all purposes.

BACKGROUND

Field

The following relates to rendering from virtual 3-D scenes.

Related Art

Rendering images from 3-D scenes using ray tracing is based onevaluating a rendering equation, which includes a number of nestedintegrals that model different light behaviors, and is difficult tosolve analytically. Therefore, non-analytical approaches to evaluatingthese equations can be used. One successful set of approaches toapproximating the rendering equation is to use sampling techniques. Theintegral is evaluated at a number of discrete values, which can bedetermined randomly, to produce a probabilistic estimate of the integralfrom the samples.

SUMMARY

In one aspect, a hybrid rendering system uses ray tracing and samplingof light transport data volumetrically dispersed in a 3-D space. Forexample, a method for use in rendering from a virtual 3-D scenecomprises tracing a ray, in a direction, from a point in a 3-D scene upto a maximum distance of a transition zone. If no intersection wasdetected for the ray closer than a minimum distance of the transitionzone, then the method marches a conic section through a 3-D grid ofvolume elements in the 3-D scene along the direction of the ray. Eachvolume element is associated with data representative of light energypropagating through surfaces of that volume element. An area of theconic section being marched is determined based on a spreading factorand a distance from the point in the 3-D scene to a current samplingpoint. Light energy data is collected from the volume elementsintersected by the conic section during the marching and lightinginformation is produced for the point in the 3-D scene from thecollected light energy from the volume elements. In some aspects,methods can march a cone (which defines the conic section) for eachemitted ray. Each cone can be axially centered along a direction of arespective ray. The march of a cone can begin at a minimum distance froma ray origin, and which minimum distance can be determined according tocharacteristics of the ray.

Data describing light energy propagation is accessed during the conemarch. Such data may express direction and intensity data associatedwith light energy propagating from a respective volume element. Suchlight energy can include light originating from the volume element andlight propagating through the volume element (and which can be modifiedaccording to characteristics of objects contained in such volumeelement). For example, each 3-D grid element can be a cube, and eachface of the cube can have light direction and intensity data associatedtherewith. Each cube of a given grid encompasses a volume that isencompassed in one or more larger grid elements (except for the largestelements). More granular elements represent smaller volumes in the 3-Dscene and more precisely represent light directional and color intensitydata, because less granular elements comprise a blending of thedirectional and color intensity data of a plurality of more granularelements. The light transport data can be created by forward tracing oneor more rays from each light source and depositing discretized lightenergy records in the 3-D scene according to results of the forwardtracing. For example, forward tracing may detect intersections betweengeometry in the 3-D scene and the forward-traced rays, which can resultin deposition of a light energy record having characteristics determinedaccording to characteristics of that surface. After depositing theselight energy records in the scene, these records can be processedaccording to a specific format or formats in which that data would beexpressed. These light energy records also can be used for multiplepurposes, including providing photon maps for use in photon queries.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 depicts components of a hybrid rendering system that uses raytracing and volume rendering inputs;

FIGS. 2-3 depict aspects of using grids of volume elements to locatelight energy characterization information in 3-D space;

FIG. 4 depicts a geometry acceleration structure that can be used intracing rays in a 3-D scene;

FIGS. 5-7 depict 2-D views of an example of hybrid ray tracing and conemarching within grids of volume elements;

FIG. 8 depicts an example approach to producing grids of volume elementscontaining light energy characterization information;

FIGS. 9-10 depict example approaches hybrid ray tracing and volumetriclight energy estimation, for determining shading information for pointsin a 3-D scene or pixels of a rendering being produced, for example;

FIG. 11 depict a further generalization of the more specific examples ofFIGS. 9 and 10;

FIG. 12 depicts an example of a processing system in which disclosedaspects can be implemented;

FIG. 13 depicts an example query resolver system;

FIG. 14 depicts light energy records located in volume elements;

FIGS. 15A and 15B depicts aspects of an approach to determining a set ofrecords responsive to a nearest-neighbor query;

FIG. 16 depicts a plurality of weighting curves that can be applied todata for records determined to be responsive to a given query;

FIG. 17 depicts an increasing distance ordering of light records,related to abstracting data from records responsive to a query;

FIG. 18 depicts that blending functions and queries can have differentrelative weightings or priorities for a variety of differentcharacteristics of records within a set of records;

FIG. 19 depicts an example system for query resolution which has aplurality of query resolver units that can each have limitedprogrammability circuits for performing specified functions;

FIG. 20 depicts aspects of an example process of abstracting data fromrecords deemed responsive to a query;

FIG. 21 depicts an example of an abstraction process; and

FIG. 22 depicts an example data flow within systems that perform queryresolution and data abstraction according to the disclosure.

DETAILED DESCRIPTION

Ray tracing can produce vivid and detailed images from 3-D scenedefinitions, and can be used to model complicated light behavior andeffects. Ray tracing is used here as a sampling technique for samplingor developing light transport data for parts of a 3-D scene that arerelatively close to a point for which shading information is to beobtained. Here, when a sample comes from a point relatively close to aray origin, it will be less noisy than a sample obtained from a pointfarther from the ray origin, because a volume of space where the sampleis obtained grows as the distance from the origin grows. The raysampling may be conducted at a relatively low density of sampling (suchas a sampling density that would produce a noisy image, if the sampleswere of portions of the 3-D scene relatively far from the origin of therays. Keeping the sampling density relatively low allows lowercomputation cost for ray tracing.

In conjunction with this ray tracing approach, a sampling of discretizedlight transport records (explained below) associated with sub-portionsof the 3-D scene farther from the ray origin is conducted (e.g., outsideof a maximum distance to which the ray(s) were traced). Results of oneor more of shading induced by ray intersection(s) and data from thelight transport records can both be used to arrive at a final shadingresult.

In more detail, ray tracing involves identifying an intersection betweena ray traveling in the 3-D scene and a surface. Then, that surface canbe shaded to produce the point sample that will be used to determinecharacteristics of a surface from which the ray was emitted. Identifyingan intersection for a ray can be a computationally expensive operation.To make intersection testing more computationally efficient, a geometryacceleration structure can be provided that has elements boundingportions of the surfaces (which can be formed of primitives) in the 3-Dscene. For example, a geometry acceleration structure may comprise ahierarchical tree of axis-aligned bounding boxes that terminate in leafnodes, which collectively bound all the primitives forming surfaces inthe 3-D scene. The geometry acceleration structure is used to identify asmaller set of surfaces that could be intersected by the ray; so, a rayis first traversed through the acceleration structure, and then istested for intersection with any surfaces that remain candidates forbeing intersected by that ray.

An approach that provides for pre-computation of light transportinformation within pre-determined volumes of space in a 3-D scene can beused to characterize light transit information in different portions ofsuch 3-D scene. During rendering, it may be desired to determinecharacteristics of light energy arriving at a given point in the 3-Dscene, and the pre-computed light transport information can be used. Agrid of volume elements can provide a way to associate particular lightinformation with particular parts of a 3-D scene, as explained below.

An example of a grid of volume elements is a set of “packed” volumes,typically of uniform shape, that fill a 3-D scene. For example, a set ofcubes of a given dimensionality can be packed to fill the 3-D scene. Insome circumstances, multiple grids of volume elements can be defined tofill the 3-D scene multiple times. For example, a plurality of grids ofvolume elements, each respectively having a set of cubes of a givendimension, can be used to fill the scene. Functionally, this means thata larger cube of one grid will have contained therein multiple cubes ofsmaller size of a different grid (e.g., if an element is divided alongeach dimension, then 8 constituent elements would result). However, thegrids of volume elements are not traversed by following a link or pathfrom a larger volume element to a smaller. Rather, the volume elementsare accessed during a march from one point (e.g., an origin of the ray)in a direction through the 3-D scene, and data from volume elementsintersected during the march is accessed. Where multipledifferently-sized grids populate the 3-D scene, a selection can be madeof a particular size of volume element to sample at each location in the3-D scene at which sampling is to be conducted. A march can be conductedby testing a defined shape (e.g, a cone) for overlap with a sequence ofvolume elements. The volume elements can overlap, such as where a sizeof the volume elements tested changes.

As an example, a set of volume elements can be produced, ranging fromsmall elements to larger elements that include smaller elements. Eachvolume element can be a 6-sided regular shape (e.g., a cube). Each faceof the shape can parameterize light that is traveling through that face.A volume element that includes other volume elements will be associatedwith data that represents a blending of the light transport informationfor each included volume element. Thus, each volume element can use thesame amount of data to represent light transport information, resultingin light transport information for a given volume of space beingavailable at various degrees of specificity. Stated otherwise, amulti-sized set of nested volume elements, such as close packed cubicelements located in 3-D scene space (and in contrast to a sparse tree ofvolume elements positioned and sized to bound scene geometry) can beproduced, wherein each volume element includes a characterization of thelight emitted from each of the faces of that volume element. A largervolume element represents the light emission from each of the multiplesmaller volume elements located in it, but with less precision.

After creation of volume elements, they can be used for rendering byintersecting a conic section from a camera or a surface in the 3-Dscene, and collecting the light emission encountered from all the volumeelement faces encountered on the path of the conic section. Closer tothe origin of the cone (of which conic sections are taken at eachsampling location), smaller volume elements are accessed and the lightemission information is used, while farther from the origin, largervolume elements are accessed. One characteristic of sampling such volumeelement(s) is that each further level in the volume element structurecan require eight times more memory (where each dimension is equallysubdivided in a grid that is homogenous for different dimensions).Therefore, not only is the absolute memory size required to store thevolume element set increased, but also the memory bandwidth requiredduring rendering would increase, since sampling more small volumeelements requires more memory bandwidth than sampling fewer large volumeelements (holding constant an amount of data used to represent therelevant lighting information). Thus, having more layers in thehierarchy will yield more accurate results, but incurs a high memorycost. A cone here refers to a shape enclosing a volume, and which has anincreasing cross-section area in a direction perpendicular to alongitudinal axis of the shape, as the shape becomes increasinglyelongated on that axis. In some cases, the conic section may besymmetrical around such axis. Here, a conic section (a cross section ofthe volume) does not imply that the such cross-section have anyparticular shape. For example, the cross-section can be circular, anoval, rectangular, and so on.

In the following disclosures, examples of using both point sampling andvolume sampling techniques (e.g., ray tracing and volume elementsampling) in order to determine lighting information at a location in a3-D scene are disclosed. In summary of the following, point sampling isundertaken for one or more samples that are limited to within athreshold distance of the point. For example, rays can be traced todetermine an intersection, if any, within a threshold distance of thepoint. Outside of that threshold distance, volume sampling can beperformed. In an example, volume sampling is undertaken by marching aconic section through a grid of volume elements. Sizes of the volumeelements sampled can be determined according to distance from the point.Such sizes also can be selected according to a spreading factorassociated with the cone, where the spreading factor indicates howquickly the cone spreads as a function of distance.

FIG. 1 depicts functional elements of a hybrid ray tracing system 10.System 10 includes a source of ray definition data 12, which provides aninput to a ray intersection testing module 14. Ray intersection testingmodule 14 also has as input an acceleration structure 15 and source(s)of 3-D scene data 19. Ray intersection testing 14 communicatesintersection testing results to a ray intersection shading module 29.Ray intersection shading 29 outputs shading results to a sample buffer17.

A volumetric rendering process 27 receives light transport informationobtained from volumetric elements by a volumetric data access module 25.Volumetric data access module 25 can receive inputs from one or more ofa photon structure 21 and from a volume grid storage 23, which containslight transport data, as described in more detail below. A grid creator22 is operable to produce the grids of volume elements that are storedin and provided from grids 23. FIG. 1 also depicts that a photon queryprocess 28 can be provided to query photon maps stored as photon maps20. Photon maps 20 can be produced in conjunction with production of thegrids of volume elements 23, as a further product of processingpreformed with light energy records 21. Volumetric rendering process 27can serve as a controller for volumetric sampling tasks and controlwhich volume elements are to be sampled and also process resultsreceived from such sampling.

FIG. 2 depicts a grid of volume elements 40, with one of the volumeelements 41 is specifically identified. FIG. 3 depicts a grid of volumeelements 43, which have smaller and denser volume elements than grid 40.Since the grid 43 contains smaller elements than grid 40, a number ofelements in grid 43 can exist within one element of grid 40. FIGS. 2 and3 do not imply that the volume elements of grids 41 and 43 arehierarchical, or that there is a relationship between volume element 41and volume elements that occupy portions of volume element 41, (e.g.,there is not an implication that the grids are traversed from a largerto a smaller element, within a volume encompassed by the larger element,as may be the case with a hierarchical acceleration structure).

In FIG. 3, volume elements 50-52 are specifically identified. Volumeelements are associated with light transport characterization data.Light transport characterization data for a given volume elementcharacterizes transport of light energy from that element; such lightenergy may be generated in that volume element, or may originate fromoutside that element. In one implementation, each volume element can beassociated with record(s) of energy radiating from surfaces within thatvolume element. Such radiating energy can be characterized based onforward tracing from emissive sources.

As an example, such data can represent light transport through specificfaces of the volume elements. For clarity of description, FIG. 3 showsthat element 50 has a face 90, which is associated with a lighttransport characterization 82. Light transport characterization 82 caninclude information about light being emitted from inside element 50 toan exterior of element 50. Light transport characterization 82 also caninclude information both about light traveling into element 50 throughface 90, and vice versa. A similar light transport characterization 83is identified for face 91 of element 51. Light transportcharacterizations 84 and 85 are shown for other faces of element 51. Inone example, light transport characterization 81 is a less granularcharacterization of light transport. Such light transportcharacterizations 81-85 may include information about lightdirectionality, color and intensity of light. The data can include oneor more directions and quantification of light energy traveling in eachof those directions. A light transport characterization can characterizelight traveling in only one direction (e.g., out of the volume), a rangeof directions, and bidirectional light transport. In otherimplementations, a statistical distribution or curve can be providedthat defines a pattern or distribution of light energy over the surfaceof each face.

In an example, a distribution of light energy may be provided in whichvarious parameters may be completed for each characterization, using thesame distribution function. The pattern or distribution can be fittedaccording to the actual light energy being emitted. In some examples, asingle type of pattern, which has one or more parameters that can betuned for each face, and those parameters are then selected to match theactual distribution, to the extent possible. As explained, theassociation of light energy propagation through faces of the volumeelements is an example, in that a variety of ways to express lighttransport within such a volume element are possible. In general, suchlight transport would be expressed in a manner that allows lighttransport, along a cone march, to be evaluated.

Volume element 41 in turn includes volume elements 43, of which 4 (of 8)are depicted in FIG. 3. FIG. 3 also depicts that geometry, such asprimitives 45-46 and shape 47 are located within the same volume asoccupied by volume elements 43, even though there may not be a logicallinkage or connection that identifies which of such geometry is within agiven volume element.

Each set of volume elements, in an example, have an even distribution inthe 3-D scene, because the volume elements of that set are arranged in aregular, non-sparse structure. Many kinds of data structures used in raytracing are irregular, and are designed to reduce storage space requiredto represent the data structure. In one aspect, the volume elements ineach set are in pre-determined respective locations, and each isassociated with (“contains”) data representing light energy within thebounds of that volume. By contrast, an acceleration structure forabstracting geometry for use in testing rays for intersection in the 3-Dscene has volume elements that are located and sized according to thegeometry in the scene.

Forward tracing light energy from lights into the 3-D scene can be usedto determine light energy that will be represented in each volumeelement. Forward tracing may involve tracing rays from each lightsource, and for each place where the ray intersects, data representinglight energy will be deposited. Such deposition is additive in that the3-D scene will become brighter as more light energy is deposited. Suchforward tracing has some similarities to photon mapping, in that photonmapping also involves forward tracing from lights. However, photonmapping provides a norming operation that maintains a total amount oflight energy in the scene constant as photons are deposited. The normingoperation results in surfaces having a number of photons that correlateto a relative complexity of how light interacts with that surface. Forexample, a flat painted wall may have only a few photons deposited,while a facet of a glass surface may have many more. In some approachesherein, the finest grid of volume elements (e.g., the grid with thesmallest elements) may have on the order of 2^24 elements, which can beexpressed as 8 levels below a root. If a grid of volume elements were tobe used without using ray tracing, a finest grid may require on theorder of 2^40 elements, or on the order of 32000 times more gridelements in the most granular level of the grid structure. Theseexamples are non-limiting, and qualitative.

FIG. 4 depicts an example geometry acceleration structure 101, which canbe represented by data stored in acceleration structure storage 15.Geometry acceleration structure 101 includes a root element 102 that isassociated with child elements 104-106. Each child element 104-107 canin turn be related to child elements 107-109. This chain ofrelationships may continue until reaching a set of leaf nodes 110-112.In some implementations, each element bounds a portion of 3-D space, inwhich one or more elements of geometry exist. In some implementations,geometry acceleration structure 101 is sparse, such that areas of a 3-Dscene that do not contain geometry have no geometry accelerationstructure elements. Additionally, each acceleration structure element(except the root) is related to one or more parent elements, and one ormore child elements. Multiple child elements may relate to the sameparent, and multiple parents may also relate to a single child element.As an example, a parent node bounds a given sub-portion of space, inwhich certain portions of geometry reside, and child nodes boundselections of the geometry in that parent node. Geometry accelerationstructures may have branches with different numbers of nodes betweenroot and each leaf, may not have an explicitly defined root, may haveall primitives bounded by nodes that bound only primitives, or whichbound other nodes. As such, FIG. 4 is exemplary and not limiting as toan implementation of a geometry acceleration structure.

For example, an acceleration structure for bounding scene geometry caninclude a tree of axis aligned bounding boxes (a tree here meaning thatthere is a relationship between elements that can be followed totraverse from a starting point in the tree to another point). Forexample, a tree of axis aligned bounding boxes can be hierarchical, andhave all geometry bounded by leaf nodes of the hierarchy. Other examplesof acceleration structures include K-D trees and sphere hierarchies.Functionally, a hierarchical acceleration structure can be traversed bystarting at a root node, which can bound all scene geometry (the rootnode can be implied, as an extent of the entire 3-D scene), and thenfinding all children of the root, testing them for intersection, andthen continuing to traverse the branches of all child nodes that wereintersected by a ray, following the same pattern. Thus, in traversing anacceleration structure for geometry, a ray can be tested forintersection in a plurality of different parts of the 3-D sceneconcurrently. Ray intersection testing module 14 also accesses 3-D scenedata from the source of 3-D scene data 19 (FIG. 1). Such 3-D scene datacan include primitives composing objects in the 3-D scene, and in anexample, are accessed when a leaf node is intersected, so that thegeometry in that leaf node is to be tested for intersection.

Geometry acceleration structure 101 is used by ray intersection testingmodule 14 to remove sub-sets of scene geometry from having to beexplicitly tested for intersection. For leaf nodes that are found to beintersected by a given ray, geometry residing in those leaf nodes istested for intersection with that ray, and information for a closestintersection can be sent to ray intersection shading module 29. Once anintersected surface is found, a shader can be run to determine whateffect that surface will have on a rendering being produced. A shadercan, for example, emit a reflection ray, and can also emit rays that aredirected to light sources, in order to determine what light is hittingthat intersected surface.

FIG. 9 depicts an example process of producing lighting information fora point in a 3-D scene according to the disclosure. FIGS. 5-7 are usedin explaining aspects of the process of FIG. 9 (FIGS. 5-7 depict 2-Dillustrations, instead of a 3-D model, for simplicity). In FIG. 9, at265, a point (FIG. 5, 123) is identified as a location for whichlighting information is to be obtained. The location can be a point on asurface of an object in a scene, or a sample of a pixel in a rendering,for example. At 267, a ray (ray 124 of FIG. 5) is defined to be emittedfrom proximate the point, in a direction, and is associated with aspreading factor. In FIG. 5, an expression of the spreading factor isdepicted (in 2-D) as a cone defined by boundaries 125 and 126 thatbracket ray 124. At 269, a transition zone is defined and includesmaximum and minimum ray tracing distances (minimum distance 131 andmaximum distance 132 of FIG. 5). In one example, the transition zone isdefined based on the spreading factor. In one example, a wide spreadingfactor results in a transition zone closer to origin 123.

At 271, using a geometry acceleration structure, rays are traced in the3-D scene to identify an intersection within the maximum distance 132 ofthe transition zone, if any. In FIG. 5, ray 124 is traced (FIG. 9, 271)from origin 123 to maximum distance 131, attempting to identify aclosest intersection for the ray and surface geometry, as explainedabove. At 273, if there is an intersection before the transition zone(closer than minimum distance 131 in FIG. 5), then, at 275, results ofshading that intersection are used to determine lighting information.

At 277, beginning from minimum distance 131, a cone march begins. Raytracing continues through the transition zone, and at 279, if there isno ray intersection within the transition zone, at 281, results of thecone march will be used for producing lighting information for thepoint. At 279, if there is a ray intersection in the transition zone,then at 283, results of the cone march are blended with a result ofshading induced from or caused by the ray intersection (e.g., a shadingoutput).

Now, FIG. 5 is used to explain further aspects of the cone marchintroduced in FIG. 9. The cone march includes that a conic sectiondefined by boundaries 125 and 126 is projected from point 123 into space(in 2-D, the conic section becomes a line that is moved within the 2-Dplan.) FIG. 5 depicts that a grid of volume elements, which each have arelatively small volume compared with volume elements of other grids,are selected for sampling comparatively close to point 123. Lightcharacterization information for each volume element intersected by theconic section is accumulated (here, the example assumes lightcharacterization information is associated with faces of the volumeelements, which is an example implementation). Such accumulation caninclude tracking an amount of light energy accumulated within variousfrequency spectra and also accumulate an opacity value associated witheach intersected surface. The opacity value can be derived fromcharacteristics of what lies in the interior of that volume element. Theopacity value can be used to decide when to terminate the cone march.For example, a black wall would absorb light energy and be opaque, sothe cone march can be stopped based on sampling the lightcharacterization data of a volume element that specifies theseproperties.

FIG. 5 also depicts that where the grid of volume elements being sampledincreases in size, that a transition zone can be provided where volumeelements of both sizes are sampled. By particular example, whenswitching between a grid of volume elements having a size according tovolume element 128, to a grid having volume elements of a sizeexemplified by volume element 129, a transition zone is demarcatedbetween 134 and 135. Volume elements outlined in dashed form (e.g., 140)depict that an accumulated opacity value has been found to make furthercone marching unnecessary. A decision criteria as to when a march can bestopped can vary with the application.

FIG. 6 depicts a cross-section 142 of the conic projection discussedwith respect to FIG. 5. In FIG. 6, the volume elements are of size likethat of volume element 127. FIG. 6 thus depicts that some volumeelements are entirely within the area of cross-section 142. Some volumeelements are only partially within cross-section 142 (e.g., area 144).For those volume elements, a weighted combination of the lightcharacterization information can be combined with that of the otherlight characterization information. FIG. 7 depicts similarly that thevolume elements increase in size (e.g., now the volume elements aresized like that of volume element 128), but the cross-section 143 of theconic section also has grown. FIG. 7 also depicts that in practice, somevolume elements will drop out of the cone march before other elements;and in particular, element 146 is not participating in the cone march,but surrounding elements are. FIGS. 6 and 7 also serve to illustratethat a number of volume elements will be sampled during the cone marchand the light characterization information can be blended to arrive at aresult that can be used in shading point 123, or for other processing asappropriate.

FIG. 10 depicts a substitution to a portion of the process of FIG. 9.Rather than perform a cone march (277 in FIG. 9) through one or morepre-defined grids of volume elements, a set of queries can be assembled,to be made of discretized light energy records. These queries can begenerated for different regions of space that enclose volumes of spacealong a path of a conic projection through the scene along a path of theray. In particular, FIG. 10 depicts, at 314, that a set of queries canbe determined. In an example, queries can have a spherical extent whereradii of the queries can be determined based on the spreading factor ofthe ray and a distance from point 123 (FIG. 5). A size of the volumequeried would increase as a distance of the query increases from point123.

In one approach, different maps or data structures containingdiscretized light records can be provided for use in such queries. Eachmap or data structure can have a different level of abstraction of lightenergy data. For example, a coarse map may contain discretized lightenergy records that each represents a blending of a plurality of suchdiscretized light energy records. A map or data structure of anappropriate granularity can be selected to satisfy each query. Thus, aquery with a large volume does not necessarily return more records, butrather can be used to query a data structure having light energy recordsthat each represent a blending of more granular records (which may inturn be queried using a different data structure). In such an approach,it may be appropriate to provide a single data structure that can beused for each query, but records at an appropriate level of granularityare selected to satisfy a given query. The appropriate level can bedetermined based on a variety of factors, including the volume or sizeof the query, which can be correlated to a distance from a point forwhich light energy information is being gathered.

Thus, discretized light energy records can begin as a description oflight energy at a point in space, but upon blending with other records,or abstraction to a volumetric element, a resulting light energy recordcan be generated for a determined volume. Such generation can be done inadvance or done on demand. In one approach, where such generation isdone on demand, results of such generation can be cached. In oneexample, common volumes for a plurality of marching processes (such asdifferent cone marches) can be identified, and then light energycharacterization data at an appropriate level of granularity (see FIGS.4-5 as examples) can be generated. In one example, cones may be marchesfrom different origins, but these all require light energycharacterization data from the same portion of the 3-D scene at the samelevel of granularity (which can be determined by distance fromrespective origins, and respective spreading factors for example).

In another approach, queries can be formed from multiple overlappingvolumes, and Boolean logic can be applied to determine a final queryresult. For example, spherical queries can be made to overlap to anextent, and only photons that exist in the overlapping portion can bereturned. These techniques can be used to approximate querying lightenergy data associated with surfaces of a grid of volume elements (seeFIG. 3). As in FIG. 9, where there is no ray intersection detected inthe transition zone, then at 318, photon query results are used toproduce shading outputs for the point. If there was an intersection inthe transition zone (and not before, see FIG. 9), then, at 320, photonquery results are blended with results from shading the intersection.

Following on the more specific examples disclosed above, FIG. 11 depictsa more general process that can be practiced in implementations of thedisclosure. FIG. 11 depicts that, at 345, a location is identified forwhich lighting information is to be obtained. This location can be apoint in the 3-D scene (e.g., a point on a surface of an object), or asample being taken for a 2-D image being rendered, for example. Lightinginformation is used in the disclosure to include any kind of renderinginformation, and such lighting information would be expected to varyaccording to the type of rendering being produced. In order to producesuch lighting information, at 347, one or more point samples are takenof illumination arriving at the location. At 349, one or more volumesamples are determined for lighting conditions that may affect thelocation for which lighting information is to be obtained. At 351, adistance restriction on such volume sampling to a distance outside of adefined radius from the location is established, while conversely, thepoint samples can be confined within that radius. At 353, the point andvolume samples are performed. At 355, results from relatively closepoint samples are weighted more highly than other samples obtained. At357, results of point and volume sampling can be combined to produce thelighting information for the location. Thus, the process depicted inFIG. 11 is generic with respect to how the point samples and the volumesamples may be taken. The point samples can be confined to a relativelyclose distance from the location, or otherwise weighted according todistance from the location, while the volume samples are accumulatedover a volume swept through the 3-D scene, from the location.Attenuation or an extent of the 3-D scene, for example, can govern amaximum distance at which volume sampling is conducted.

The above disclosure related primarily to producing rendering outputsfrom specified data sources (e.g., shading of intersection results andgathering data from elements of one or more grids of volume elements.)FIG. 8 provides an overview of an example process for producing datasources used in producing the rendering outputs.

FIG. 8 depicts an example process 205 by which light transport data canbe produced for use during rendering from a 3-D scene. FIG. 8 depictsthat process 205 provides that, at 206, rays can be forward traced fromlights into a 3-D scene. For example, a respective set of rays can bedetermined for each light, where a number of rays in each set can bedetermined according to an intensity or importance of that light. In oneapproach, the rays can be specified using Monte Carlo or Quasi MonteCarlo principles. Rays also can be specified based on known locations ofobjects in a 3-D scene. An artist also can directly specify rays orbundles of rays to be forward traced. This forward tracing establishesvisibility of objects in the scene to each of the lights. Additionally,once visibility of each light is determined, further generations of rayscan be forward traced according to characteristics of the respectivesurface intersected by each of the objects. At 208, discrete lightenergy records can be deposited at each intersected surface according tocharacteristics of that surface. For example, a diffuse surface can havea set of light energy records dispersed on the surface, while a shinysurface can have a specular reflection represented by more denselypacked light energy records. Also, rays that are traced from a givensurface also will be determined according to the nature of the surface.For example, rays can be traced from a specular surface according toSnell's law. A diffuse surface scatters light more and thus can resultin shooting more rays going in variant directions, but can be traced fora shorter distance, in an example.

At 210, an acceleration structure for use in photon map queries can beproduced based on the locations of the deposited light energy records,and an appropriate norming process. This acceleration structure can beseparate from an acceleration structure for tracing rays in the sceneand also different from the grids of volume elements. Portions or anentirety of these structures can be shared.

At 214, the grids of volume elements can be produced by aggregating thelight energy data described by the records into respective volumes ofthe 3-D scene that are within different of the volume elements. In oneapproach, face-specific representations of light energy propagation canbe produced from the aggregated data. At 216, an acceleration structurefor ray tracing can be produced; this portion of the depicted process205 may proceed according to conventional approaches. In some examples,however, volume grid elements being processed for producing the 3-D gridof volume elements (at 214) can be used as an input for producingelements of the acceleration structure. For example, a smallest volumeelement being processed can be processed for both light energy recordsand geometry, even though the ultimate constituent elements of the gridsof volume elements and of the acceleration structure are different. Insome implementations, one or more of these acceleration structures (forphoton querying, for abstracting scene geometry, and the 3-D grids) canbe shared or partially shared structures. For example, a set of axisaligned bounding boxes can abstract scene geometry, and closer to a rootnode, also serve as grid elements, while leaf nodes can be sparse.

Each of the above-described portions of process 205 is depictedserially. However, the process portions can proceed in parallel. Forexample, if working within a given volumetric portion of the 3-D scene,a part of multiple process portions (e.g., 210, 212, 214 and 216) can beperformed, and then a different volumetric portion of the 3-D scene canbe processed next. Additionally, a number of independent threads (orprocessing units) can be allocated for processing the different portionsof the process, such that they may proceed concurrently.

FIG. 12 depicts an example system 401 comprising one or more ofprogrammable elements and fixed function elements, in which aspectsdisclosed above can be implemented. System 401 comprises a hostinterface 403, which can provide an interface to a processor primarilydevoted to execution of applications that may use system 401 forselected processing functionality, such as graphics processing. Suchprocessor can be integrated within a system on chip. A bus 404 providescommunication among various components described below. In someapproaches, an application processor also can be connected to bus 404,and thus, host interface 403 is not a necessary component. A variety ofdata masters 402 can be used to setup computation to be performed onsystem 401. Such data masters 402 include a vertex data master 405, apixel data master 406, a compute data master 407 and a ray data master408. Vertex data master 405 can be used to setup geometry processing tobe performed on an array of computation clusters 410. Pixel data master406 can be used to setup pixel shading operations to be performed on thearray 410. Compute data master 407 can be used to setup general purposeparallelized computation on array 410. Ray data master 408 can be usedto setup ray tracing operations on array 410, such as ray intersectiontesting and ray shading operations.

Array 410 comprises a set of computation elements identified as cores421-424. Each core 421-424 comprises a respective local memory 435-438.In one example, array 410 also may comprise shared texture pipelines 430and 431. A scheduler 440 can arbitrate among jobs to be performed foreach data master 405-408. A task distributer 441 communicates withscheduler 440 in order to distribute computation tasks to be performedon array 410. A ray co-processor 445 can be provided to assist in raytracing computation. In one example, ray co-processor 445 comprises acollector function that collects rays to be processed into groupsaccording to one or more grouping criteria. System 401 also can comprisea variety of other coprocessors 451-453 that can be special purposehardware for different activities, such as audio processing or otherdigital signal processing. A texture loader 454 can be used to loadtexture information as an offload to texture pipelines 430-431. Array410 also can communicate with a cache hierarchy 461 that may also couplewith a system memory interface 462. Elements depicted in FIG. 1 can beimplemented in system 401 by programming array 410, by using rayco-processor 445, using one or more co-processors, or a combinationthereof. Depending on implementation different, fewer, or additionalcomponents may be provided in a system according to FIG. 12. Forexample, not all systems may implement geometry processing on the samephysical computation resources as pixel shading or ray processing.

Array 410 can be programmed to perform processes or otherwise implementfunctions shown in FIG. 1. Fixed function circuitry can also be providedto perform such functions, or portions thereof. Various portions ofsystem 401 can perform different portions of the processes andoperations described herein. For example, vertex data master 405 canoperate to obtain vertex data used in creation of an accelerationstructure that abstracts scene geometry, and also during forward tracingto create discretized light data records. Array 410 can be programmedwith shaders that are activated in response to ray intersections. Array410 also can be programmed to perform the calculations for marching aconic section through the disclosed grids of volume elements and othertasks such as ray intersection testing, for example. Ray co-processor445 can be provided to perform some specific tasks for ray operations.For example, ray co-processor 445 can operate to make collections ofrays that are submitted to array 410 for processing concurrently, andoperate to swap out ray processing tasks that begin to fail to fully usea computational bandwidth of array 410 or an independently schedulableportion thereof. Portions of array 410 can be performed to executedifferent tasks concurrently. For example, one portion of array 410 canbe producing a portion of a grid for marching, while another portion ismarching a conic section through a previously-produced portion of thegrid.

FIG. 13 depicts aspects of an example system that can receive andrespond to queries relating to discovering light energy records.Elements of the depicted system are introduced, before more detailedexplanation is provided. A general purpose processing cluster 475 canexecute shader code 477-479. Each of these portions of shader code canbe instantiated or begin execution in response to an identifiedintersection between a ray and a surface, for example. General purposeprocessing cluster 475 can use a main memory 471 to store data duringexecution and can include buffering space 473 that can be used forpurposes described below. As an example, shader code 477 issues a query480 relating to discovery of light energy records, which will be servedby a query resolver 485. This query can be received by an API 484 thatprovides one or more calls that specify criteria to be made in each suchcall. API 484 provides a uniform format to queries and can provideabstraction for underlying hardware that may have different capabilitiesin different implementations. In some implementations, API 484 maysupport a baseline type of query or queries, and in otherimplementations, extended query types or formats may be supported.

Query resolver 485 can read from acceleration structure 487 that can beimplemented as a graph of a set of interconnected elements that abstractsubsets of light energy records located in a 3-D scene. A subset oflight energy records in light energy records 489 can be identified to beread. A working memory 491 can store intermediate results of photonqueries. Descriptions of abstraction modeling processes 493 can bestored and used by query resolver 485 to produce one or more results foreach of the queries it receives, such as query 480.

When executing shader code requests for light record information (e.g.,emits a query to discover photons within a defined radius of a specifiedpoint), the shader code may have coded with some preliminary guess orheuristic as to how many photons may be returned in response to a givenquery. However, in a query that simply returns all records that meet agiven specification, there is no apriori limitation on a number ofrecords that are discovered and returned. So, shader code may reserve abuffer space (e.g., buffer 473) to receive records returned from aquery. However, such buffer space reservation would need to be sized toa “worst-case” scenario, in which a large number of records werereturned. Additionally, in a situation where memory is constrained, orwhere it is desirable to reduce data traffic (e.g., for powerconsumption), this approach may be undesirable. The following discloseprovides a variety of example approaches to enabling shader code to havemore predictable responses to such queries, to enable serving of a widervariety of queries and to accelerate the computation of useful responsesto such queries. These queries also can be used to produce pre-computedlight transport data for use in techniques and systems disclosed above.Queries according to the disclosure also can be used to query and returnsuch pre-computed light transport data.

FIG. 14 depicts an example of light energy records located withindefined volume elements of a 3-D space. These light energy records canbe discovered and processed by query resolver 485. FIG. 14 depicts thatlight energy records can contain a variety of different information. Theinformation in the light energy records can be used in conjunction withdifferent kinds of query definitions or other processing approaches toproduce an ultimate result to a given query. Examples of light energyrecords include light energy records 496 and 501. Light energy record496 includes data defining an emission 497 that has adirectionally-specific distribution of light energy. Emission 497 can berepresented as a parameterized distribution, such as by supplyingcoefficients for a selectable directionally-specific weighting function.Emission 498 of lighting energy record 501 shows a simpler example of adirection and intensity vector.

FIG. 15A depicts an example situation in which a query for light energyrecords within a radius 504 of a query locus 502. In FIG. 15A, records505-507 are located within radius 504. Query resolver 485 may searchwithin an acceleration structure for one or more elements that bound thevolume of space enclosed by the query. There may be multiple suchelements that collectively bound the volume. Query resolver 485 maysearch for these elements of the acceleration structure and identify theappropriate records in any order (i.e., there is no guarantee that queryresolver 485 identifies records in a known order, such as ordering byincreasing distance from origin 502. Also, a number of records locatedin the volume of the query would be unknown initially.

However, some kinds of queries may benefit from or require a selectedrelative ordering or sorting among records. For example, a query may askfor a specified or maximum number of nearest records to a locus(“k-nearest-neighbor” (knn) query), and which may also be limited to amaximum radius of search. In such a circumstance, results found by queryresolver 485 would need to be compared or sorted in order to properlyidentify the responsive records. Query resolver 485 may not have enoughworking memory to store these results. Therefore, an approach toimplementing a knn query is to emit a series of nearest neighborqueries, but each query tracks, as a minimum distance, the distance ofthe previously-identified record. This minimum distance also may containidentifying information about the previously-identified record. Thisinformation allows differentiating two records that are not located atthe same distance (within a precision of the test).

FIG. 15B depicts a more specific example of how a knn (where k=3) querycan be implemented. Initially, a query is made that requests the singlenearest record to locus 502. This query returns record 504. A subsequentquery is made, which includes information about the distance from theprevious closest record returned (represented as radius 510). Queryresolver 485 can thus exclude from search any portions of space closerto locus 502 than this distance. Query resolver 485 may find that bothrecord 507 and record 506 have the same distance from locus 502. Queryresolver 485 would operate to select from record 506 and 507 one recordto return, according to identifier information for each record. Forexample, query resolver 485 may select a record with a sequentiallyearlier ID. For example, the second query may return record 506, whichis associated with radius 512. A third query is emitted, and isassociated with radius 512 and identifying information derived fromrecord 506 (e.g., a selected number of low order bits from an ID). Ifquery resolver finds record 506 first, then it can exclude this recordbased on the identifier bits, and then ultimately will find record 507,and return that record.

Such an approach is appropriate where query resolver 485 may be a fixedfunction or limited programmability circuit that has only a small amountof storage available when resolving each query (e.g., may have spaceonly for identifying information for a single record). In such case,each time query resolver identifies a record that may be responsive to aquery, it may need either to return that record or to replace anexisting stored identifier. Such a query resolver can deterministicallyrespond to a nearest-neighbor query, and by extension according to theabove-described technique, to a knn, k>1, query.

FIG. 16 is used to describe aspects of techniques to abstract recordsidentified for a query, and present a combined result. These techniquescan be used to increase determinism in an amount of data traffic thatwill be generated by a query, reduce query buffering requirements, andprovide hardware acceleration for processing query results, and allowingartist control over aspects of hardware accelerated filtering orabstracting of query results. More particularly, FIG. 16 depicts anexample set of curves 530-534 that have, as an independent variable, anumber of light records and as dependent variable, a contribution ratio.In some implementations, these curves are for a set of light recordsorganized by increasing distance from a particular locus. Thus, in someapproaches, each of the curves describes a different overall weightingfor a set of light records organized into increasing distance order. Forexample, curve 532 describes a linear decrease in contribution ratio foreach incremental light record discovered, while curves 534 and 533describe a faster drop off of contribution ratio.

An implication of these techniques is that light records at differentdistances from a locus can be blended according to different strategies,and based on relative location or density of other light records. Forexample, in the linear curve 532, each incremental record can beweighted by a linearly decreasing weight. In some approaches, the totalweighting can be a constant value, e.g., such that the blending does notamplify a total energy represented by the records, but rather blends toproduce a constant-energy result. These curves can be structured so thatthey have pre-defined weightings for each incremental record, assuming apre-determined number of records; they also can be parameterized, suchthat the weighting of each record is determined based on a total numberof records that was discovered. Determining final weights for eachrecord based on a total number of records discovered can be implementedby first determining a total number of records before weighting eachrecord and accumulating that output into a summation.

Additionally, two or more of these curves can be blended together inorder to arrive at an interpolated curve. For example, if curve 532 isweighted for 15 records, while curve 534 is weighted for 8 records, thenif 10 records are identified for a given query, the weightings for thoserecords can be determined by blending the weightings described by eachof these curves.

In some implementations, a set of curves can be pre-defined and storedor encoded in circuitry accessible to query resolver 485, and can bepart of abstraction modeling processes 493. In some implementations, theorder and shape of the curves can be specified by different polynomials.A selection of one or more polynomials and parameters for thosepolynomials can be passed with a query. A query can specify a volume tobe searched for records in any of a variety of ways, such as a locus ofone or more points and a distance from those points, extrusions, boxes,spheres, and so on. Some queries may not explicate a maximum volume, butinstead may specify a maximum number of records. Some queries mayspecify a directionality to exclude certain records. For example, aquery may require that directions of records have positive dot productswith a direction specified by the query. FIG. 18 provides more detailsconcerning examples of query definition options.

FIG. 17 depicts an example where different queries 536, 538 and 539 havedifferent maximum radii from origin 540, and therefore include differentsets of records. The records that are discovered with respect to each ofthe queries can be blended in accordance with a selected curve from FIG.16. For example, if the records identified for query 538 were blendedaccording to curve 533, and curve 533 transitioned from high to lowbetween 2 and 4 records, then the 5^(th) record would have a relativelysmall contribution to the weighted sum while the first record would havea much higher contribution. If curve 534 finished transitioning ataround 6 records, and curve 532 finished transitioning at 12, then ablending between curve 534 and curve 532 may be used to blend the set of10 records identified by query 539.

FIG. 18 depicts that blending can be controlled based on a variety ofcharacteristics, which can include those specified by the query, andalso those of the records themselves. FIG. 18 shows that a query canspecify a blending curve for each of a number of differentcharacteristics of light energy records. For example, similarity ofdirection can be one factor in an ultimate weighting determination,color (or more generally spectral content) of the light energy recordscan be another, and distance from a specified locus yet another examplecharacteristic. These curves collectively can specify a final weightingfunction. In some examples, different channels of a record can beweighted differently. These options can be specified by a query. Such aquery can reference a convention of prearranged query profiles, otherselections of combinations of search criteria. Query resolver circuitrycan be provided to accelerate such searches.

FIG. 19 depicts a modified version of the example system 401, where aray and photon co-processor 550 is provided and comprises a set ofresolver units 551-553. Each resolver unit 551-553 contains anintersection test unit, an evaluation unit 556, and a local memory 557.Intersection test unit 555 can return a closest intersection result fora shape. The shape may be a primitive composing scene geometry, anelement of an acceleration structure, displaced or implicit geometry, oranother surface that can be defined and tested for intersection with aray. Evaluation unit 556 may implement aspects of the query-relateddisclosures described above. Evaluation unit 556 may comprise circuitrythat can only execute non-branching instruction streams, for example.Evaluation unit 556 may comprise circuitry that can evaluate a specifiedset of polynomials, such as a linear and a quadratic polynomial, for aset of coefficients and a value of the independent variable. Evaluationunit 556 also may include a multiplier unit, such as an integer, fixedpoint, single or double precision floating point unit. The multipliermay use a block floating point representation of one or more of themultiplicands. Evaluation unit 556 also may implement an accumulatorthat can accumulate results of these calculations into a buffer.

Evaluation unit 556 also may be used to accelerate portions of analgorithm that is being predominantly executed on intersection test unit555, a core in array 410, or a combination thereof. For example,evaluation unit 556 may return a stream of function evaluations, wherethe one or more independent variables is incremented according to a stepsize, such as a step size set by intersection test unit 555. This streamof evaluations may be used to perform volumetric rendering techniques,ray marches, cone marches, and so on. In one example, evaluation unit556 may be programmed to continue to evaluate an expression until anoutput of that expression changes sign, and then report current valuesfor one or more independent variables. Unit 556 may output multiplevalues within a specified range of the sign change, such as a previousand current value, bracketing a zero crossing point of the expression.

FIG. 20 depicts an example process that summarizes aspects disclosedherein. At 561, a query can be received for processing. At 563, recordswithin a volume defined by the query are identified. These records areabstracted according to an abstraction model applied to the records, toproduce a query result. Such query result may be of the same or similarformat to a query result that would have been returned for a singlelight energy record, or may express some aspect of a distribution of therecords identified. At 567, the query result is returned.

FIG. 21 depicts an example process of query abstraction. At 569, one ormore records that were within the volume can be rejected based on arejection criteria (e.g., directionality comparison). This is anappropriate approach where a tester may first identify a record within aspecified volume, but does not test other query parameters, but insteadidentifies such records for further analysis. At 571, remaining recordscan be counted, and at 573, relative weighting or blending criteria canbe defined, or selected. At 575, these records are weighted and at 577,the weighted values are summed to produce a query result. At 578,results of different of the weighting or blending criteria can beinterpolated. In an example, each weighting function can be tuned for apre-determined number of records, and after a total number of recordsdetermined to be responsive to the query is determined, a result fromany one of the weighting or blending processes can be selected, such asaccording to a closest pre-determined number to the actual number ofrecords. In an implementation, two of the results from differentweighting or blending processes can be interpolated, if theirpre-determined numbers bracket the actual number of records determinedto be responsive.

FIG. 22 further depicts aspects of an implementation of thesedisclosures. A general purpose programmable unit 591 executes shadercode 589. Shader code 589 emits a query 480, which may comprises one ormore of query bounding info 604, materials properties 605, programreferences 607, and parameters 609. An example of material properties605 includes a Bidirectional Reflectance Distribution Function (BRDF).In such a case, a BRDF for a material can be supplied by a query, andthat BRDF can be used in calculating a result returned in response toquery 480. As a particular example, a calculation can be made thatdetermines how much energy of a distribution defined by a light energyrecord is emitted within a boundary defined by the BRDF.

A query may be expressed by shader code 589 in a format supported byApplication Programming Interface (API) 484. API 484 can be implementedby computer executable modules that provide an interface that accepts aset of parameters and other information for query 593, represented byquery specifier module 595. Query specifier module 595 can produce oneor more constituent query specifications appropriate for capabilities ofa query resolver 597, which would provide results of query 593. Forexample, a knn query call may be supported by API 484, which convertssuch a query into a set of query specifications that are each served byunderlying hardware, and the results of these separate queryspecifications collectively define the results for the knn search. FIG.22 also depicts that a feedback loop may be provided to query specifier595 from query resolver 485. Query resolver 485 may provide results(e.g., results 601-603) as they are available to a simple programexecution unit 611. When query resolver 485 completes the query, byidentifying all responsive queries, query resolver 485 may provide acompletion indication 604. Such indication may also be provided with alast result returned for a query.

Simple execution unit 611 can be configured with a program from programstore 613. Such program can have specific limitations appropriate tocharacteristics of simple program execution unit 611. For example, someexecution units may not support branch instructions, may perform onlyin-order instruction execution, may not support conditionals, or may notsupport looping, as examples. These limitations may be made in order toreduce an amount of silicon required to implement the execution unit,and/or to avoid or reduce branching code. In one example, a program canbe implemented as a set of instructions for one increment or step of analgorithm. Such program can report intermediate result of one or moreincrements, or only a final result. Then, query resolver 485 may supplyinformation for a subsequent step or increment. For example, simpleprogram execution unit 611 may implement one step of a ray march, orcone march, volume rendering operation, texture coordinateinterpolation, volume interpolation, function evaluation for anincremented independent variable, and so on. A program or programsexecuted by simple program execution unit 611 may be identified byprogram reference(s) 607, supplied with query 480. Another approach tosimple program execution unit 611 is to provide a set of math functionmodels 615 that can selectively be chosen to be implemented by executionunit 611. As an example, these models may include polynomial functions.Parameters and a current value or values for the independent variable(s)may be supplied with query 480. These parameters and current values alsomay be supplied or updated from initial values by query specifier 595.For example, where execution unit 611 can evaluate a function, andreturn that evaluation result to query resolver 485, which may decide toincrement a variable or change a parameter, and request re-evaluation ofthat function.

Execution unit 611 also may cooperate with a local accumulation function617 that accepts values from execution unit 611 and accumulates theseinto a buffer location. In one example, the accumulation may include asimple summation, such as where execution unit 611 performed a weightingthat accounts for values already accumulated in the buffer. In othersituations, local accumulation may track more statistics concerningvalues that were accumulated, Local accumulation 617 may be implementedas a write instruction to a specific part of a local memory; in someimplementations, this memory is not protected from incorrect programexecution, such that execution unit 611 may update this value withoutarbitrating for access. That locally accumulated value may be returnedto a global result buffer 618 after a final accumulation. The globalbuffer location may be specified by query 480. Execution unit 611 alsomay be used to automate or accelerate other rendering tasks. As anexample, differentials may be associated with rays. A differential for aray can be modeled by tracing two or more additional rays that travelgenerally in the same direction as the original ray, but are not exactlyco-parallel. In order to make use of the ray differential, a model ofwhere these additional rays intersect with respect to the original raycan be made. Execution unit 611 can evaluate a function thatapproximates where each additional ray would have hit, based on itsdirection and a model of the surface intersected by the original ray. Inone example, a tangent plane at an intersection point can be defined andbased on an angle formed between each differential ray and the originalray, execution unit 611 can evaluate a function to identify anintersection position on this tangent plane. Thus, for a givenintersection between a ray and a surface, execution unit can identifyintersection points for the differential rays. These points can beexpressed parametrically on a surface (e.g., a tangent plane).

The term “light energy characterization” is used here to include anykind of directed flow of energy or other material, such as for modelingor quantifying intensity and/or directionality of energy propagation. A‘light energy record” refers to data associated with a point in ann-dimensional space (e.g., n=3) which characterizes propagation ofenergy. For example, the record can include data that characterizesradiance, such as radiance of light, or propagation of electromagneticwave energy. Such records can include data characterizing energy inboundto or outbound from a point on a surface, or existing in a region of adefined locus or defined volume. Different records can cover differentvolumes of space and can have overlapping volumes. Different records canrepresent the same or partially-overlapping volume at a different levelof abstraction. As a general example, propagating electromagnetic waves,such as x-rays, microwaves or radio frequency waves can be modeled usingsuch energy characterization data, as can infrared radiation. Thus,using the term “light” implies no limitation as to the kinds of energyor transport thereof capable of being modeled by implementations of thedisclosure. In the disclosure, lighting and shading information can beproduced and can be accessed. Some lighting and shading informationserves as inputs to other processes that ultimately produce a finalrendered output. Thus, shading information may not be a final product,but an intermediate thereof. Such intermediate data can take a varietyof forms and need not directly express color, luminance, chrominance orthe like. An example of a light energy record, in the context of 3-Drendering, is a “photon”, as used in the context of 3-D renderingapplications, but light energy records do not need to conform toimplicit or explicit limitations of “photons”.

As would be apparent from the disclosure, some of the components andfunctionality disclosed may be implemented in hardware, software,firmware, or any combination thereof. If implemented in firmware and/orsoftware, the functions may be stored as one or more instructions orcode on a computer-readable medium, in one example, the media isnon-transitory. Examples include a computer-readable medium encoded witha data structure and a computer-readable medium encoded with a computerprogram. Machine-readable media includes non-transitory machine readablemedia. Other kinds of media include transmission media. A non-transitorymedium may be any tangible medium that can be accessed by a machine. Byway of example, and not limitation, such computer-readable media cancomprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage,magnetic disk storage or other magnetic storage devices, or any othermedium that can be used to store desired program code in the form ofinstructions or data structures and that can be accessed by a machine.

Those of skill will also appreciate that the various illustrativelogical blocks, modules, circuits, and algorithm steps described inconnection with the embodiments disclosed herein may be implemented aselectronic hardware, computer software in a computer-readable medium, orcombinations of both. To clearly illustrate this interchangeability ofhardware and software, various illustrative components, blocks, modules,circuits, and steps have been described above generally in terms oftheir functionality. Whether such functionality is implemented ashardware or software depends upon the particular application and designconstraints imposed on the overall system. Skilled artisans mayimplement the described functionality in varying ways for eachparticular application, but such implementation decisions should not beinterpreted as causing a departure from the scope of the presentinvention.

Modern general purpose processors regularly require in excess of twobillion transistors to be implemented, while graphics processing unitsmay have in excess of five billion transistors. Such transistor countsare likely to increase. Designs have used these transistors to implementincreasing complex functionality and to increase parallelism. As such,it becomes increasingly necessary to be able to describe or discusstechnical subject matter concerning such processors, whether generalpurpose or application specific, at a level of detail appropriate to thetechnology being addressed. In general, a hierarchy of concepts isapplied to allow those of ordinary skill to focus on details of thematter being addressed.

Describing portions of a design (e.g., different functional units withinan apparatus or system) according to functionality provided by thoseportions is often an appropriate level of abstraction, rather thanexhaustively describing implementations of such portions, since each ofthese portions may themselves comprise hundreds of thousands or millionsof gates and millions, tens of millions or hundreds of millions oftransistors. When addressing some particular feature or implementationof a feature within such portion(s), it may be appropriate to identifysubstituent functions or otherwise characterize some sub-portion of thatportion of the design in more detail, while abstracting othersub-portions or other functions.

A precise logical arrangement of the gates and interconnect (a netlist)implementing a portion of a design (e.g., a functional unit) can bespecified. However, how such logical arrangement is physically realizedin a particular chip (how that logic and interconnect is laid out in aparticular design) still may differ in different process technology andfor a variety of other reasons. To the extent that circuitryimplementing particular functionality may be differently withindifferent contexts, disclosure of a particular circuit may not beparticularly helpful. Also, many of the details concerning producingnetlists for functional units as well as actual layout are determinedusing design automation, proceeding from a high level logicaldescription of the logic to be implemented (e.g., a “hardwaredescription language”). As such, it is often unnecessary and/orunhelpful to provide more detail concerning a portion of a circuitdesign than to describe the functionality to be provided.

The term “circuitry” does not imply a single electrically connected setof circuits. Circuitry may be fixed function, configurable, orprogrammable. In general, circuitry implementing a functional unit ismore likely to be configurable, or may be more configurable, thancircuitry implementing a specific portion of a functional unit. Forexample, a “simple execution unit” according to the disclosure is lessconfigurable than an Arithmetic Logic Unit (ALU) of a processor mayreuse the same portion of circuitry differently when performingdifferent arithmetic or logic operations. As such, that portion ofcircuitry is effectively circuitry or part of circuitry for eachdifferent operation, when configured to perform or otherwiseinterconnected to perform each different operation. Such configurationmay come from or be based on instructions, or microcode, for example.

For example, a “query specifier module” may be implemented by machinecode configuring a configurable or programmable processing unit, such asa core or a set of programmable cores. Thus, such a programmableprocessing unit, as configured by the machine code, becomes queryspecifier circuitry, where a person of ordinary skill would understandthat the term “query specifier” describes functionality disclosed in thespecification for such query specifier module, such as providing aninterface that accepts a set of parameters and other information for aquery and produce a query specification that is appropriate forcapabilities of a query resolver that will service the query.

In all such cases, describing portions of an apparatus or system interms of its functionality conveys structure to a person of ordinaryskill in the art. In the context of this disclosure, the term “unit”refers, in some implementations, to a class or group of circuitry thatimplements the functions or functions attributed to that unit. Suchcircuitry may implement additional functions, and so identification ofcircuitry performing one function does not mean that the same circuitry,or a portion thereof, cannot also perform other functions. In somecircumstances, the functional unit may be identified, and thenfunctional description of circuitry that performs a certain featuredifferently, or implements a new feature may be described. As such, a“unit” may be formed of one or more circuits that implement a functionor functions, where one or more of the circuits may be composed ofconfigurable or programmable logic elements. Examples of logic elementsinclude portions of ALUs, and a combination of switches and interconnectthat implement logical expressions, such as Boolean logic expressions.

In some cases, a structure or structures implementing a given unit ormodule may have permanent physical differences or adaptations comparedwith structure(s) implementing other modules or units within anapparatus or system. However, such structure(s) also may be produced bya temporary adaptation or configuration, such as one caused underprogram control, microcode, or other source of configuration.

Different approaches to design of circuitry exist, for example,circuitry may be synchronous or asynchronous with respect to a clock.Circuitry may be designed to be static or be dynamic. Different circuitdesign philosophies may be used to implement different functional unitsor parts thereof. Absent some context-specific basis, “circuitry”encompasses all such design approaches.

Although circuitry or functional units described herein may be mostfrequently implemented by electrical circuitry, and more particularly,by circuitry that primarily relies on a transistor implemented in asemiconductor as a primary switch element, this term is to be understoodin relation to the technology being disclosed. For example, differentphysical processes may be used in circuitry implementing aspects of thedisclosure, such as optical, nanotubes, micro-electrical mechanicalelements, quantum switches or memory storage, magnetoresistive logicelements, and so on. Although a choice of technology used to constructcircuitry or functional units according to the technology may changeover time, this choice is an implementation decision to be made inaccordance with the then-current state of technology. This isexemplified by the transitions from using vacuum tubes as switchingelements to using circuits with discrete transistors, to usingintegrated circuits, and advances in memory technologies, in that whilethere were many inventions in each of these areas, these inventions didnot necessarily fundamentally change how computers fundamentally worked.For example, the use of stored programs having a sequence ofinstructions selected from an instruction set architecture was animportant change from a computer that required physical rewiring tochange the program, but subsequently, many advances were made to variousfunctional units within such a stored-program computer.

Functional modules may be composed of circuitry, where such circuitrymay be fixed function, configurable under program control or under otherconfiguration information, or some combination thereof. Functionalmodules themselves thus may be described by the functions that theyperform, to helpfully abstract how some of the constituent portions ofsuch functions may be implemented.

In some situations, circuitry and functional modules may be describedpartially in functional terms, and partially in structural terms. Insome situations, the structural portion of such a description may bedescribed in terms of a configuration applied to circuitry or tofunctional modules, or both.

The description of the aspects and features is provided to enable anyperson skilled in the art to make and use the systems, apparatuses andperform the methods disclosed. Various modifications will be readilyapparent to those skilled in the art, and the principles described inthis document may be applied to other aspects without departing from thespirit or scope of the disclosure. Thus, the description is not intendedto limit the claims. Rather, the claims are to be accorded a scopeconsistent with the principles and novel features disclosed herein.

The drawings include relative arrangements of structure and ordering ofprocess components, solely as an aid in understanding the description.These relative arrangements and numbering is not an implicit disclosureof any specific limitation on ordering or arrangement of elements andsteps in the claims. Process limitations may be interchangedsequentially without departing from the scope of the disclosure, andmeans-plus-function clauses in the claims are intended to cover thestructures described as performing the recited function that include notonly structural equivalents, but also equivalent structures.

Although a variety of examples and other information was used to explainaspects within the scope of the appended claims, no limitation of theclaims should be implied based on particular features or arrangements insuch examples, as one of ordinary skill would be able to use theseexamples to derive a wide variety of implementations. Further andalthough some subject matter may have been described in languagespecific to examples of structural features and/or method steps, it isto be understood that the subject matter defined in the appended claimsis not necessarily limited to these described features or acts. Forexample, such functionality can be distributed differently or performedin components other than, additional to, or less than, those identifiedherein. Rather, the described features and steps are disclosed asexamples of components of systems and methods within the scope of theappended claims.

We claim:
 1. A method for use in rendering a computer graphics imagefrom 3-D scene data, comprising: tracing, by a processor, a ray in a 3-Dscene defined by said 3-D scene data, in a direction and originatingfrom a point up to a first end of a transition zone, and continuingthrough the transition zone to a second end of the transition zone;wherein the first end of the transition zone is separated from the pointby a first distance, such that the ray is traced the first distancebefore entering the transition zone, and the second end of thetransition zone is separated from the point by a second distance greaterthan the first distance; if no intersection was detected for the raycloser than the first end of the transition zone, then marching a conicsection through a 3-D grid of volume elements in the 3-D scene, eachvolume element associated with data representative of light energypropagating from that volume element, wherein an area of the conicsection is determined based on a spreading factor and a distance fromthe point in the 3-D scene, and collecting light energy data from volumeelements intersected by the conic section during the marching; andproducing, by a processor, shading information for the point in the 3-Dscene from the collected light energy from the volume elements, whereinsaid shading information is used in rendering said computer graphicsimage.
 2. The method for use in rendering a computer graphics image ofclaim 1, wherein the data representing light energy propagating fromeach volume element comprises directional and intensity data associatedwith respective surfaces of elements of a nested structure located inthe 3-D scene, the elements of the nested structure having differentgranularity, where more granular elements represent smaller volumes inthe 3-D scene and more precisely represent the directional and colorintensity data, and less granular elements comprise a blending of thedirectional and color intensity data of a plurality of more granularelements.
 3. The method for use in rendering a computer graphics imageof claim 1, wherein the data representing the light energy propagatingthrough each volume element comprises respective data for light energypropagating through surfaces of each volume element.
 4. The method foruse in rendering a computer graphics image of claim 1 wherein themarching of the conic section is axially centered along the direction ofthe ray.
 5. The method for use in rendering a computer graphics image ofclaim 1, further comprising, if an intersection was detected for the raybetween the first end and the second end of the transition zone,producing the lighting information by blending lighting informationresulting from shading the intersection with collected light energy fromsurfaces of the volume elements intersected by the conic section withinthe transition zone.
 6. The method for use in rendering a computergraphics image of claim 1, wherein the marching comprises selecting aset of volume elements that form a continuous volume that includes avolume enclosed by the ray.
 7. The method for use in rendering acomputer graphics image of claim 1, further comprising determining asize of the conic section at a specific distance from the point in the3-D scene based on a spreading factor and the specific distance from thepoint.
 8. The method for use in rendering a computer graphics image ofclaim 1, wherein the 3-D grid of volume elements in the 3-D scenecomprises a nested set of volume elements, volume elements in the nestedset having data representative of a blend of light energy propagatingthrough the surfaces of elements nested therein, if any, and furthercomprising determining a size of the volume element to be sampled at agiven distance from the point in the 3-D scene based on a spreadingfactor and that distance from the point where the ray originated.
 9. Themethod for use in rendering a computer graphics image of claim 1,wherein the 3-D grid of volume elements is one grid of a plurality of3-D grids of volume elements in the 3-D scene, wherein different 3-Dgrids of the plurality have constituent volume elements of differentsizes.
 10. The method for use in rendering a computer graphics image ofclaim 9, wherein the marching comprises iteratively determining alocation in the 3-D scene to be sampled, selecting the 3-D grid ofvolume elements from the plurality of 3-D grids of volume elements to beused in that sampling, and performing the sampling.
 11. The method foruse in rendering a computer graphics image of claim 1, wherein themarching comprises marching the conic section through the transitionzone and the producing of the shading information comprises performing adepth-dependent blending of the lighting information in the transitionzone with shading information resulting from shading an intersection.12. The method for use in rendering a computer graphics image of claim1, wherein the one or more 3-D grid of volume elements in the 3-D sceneare separate from an acceleration structure used to trace rays in the3-D scene.
 13. The method for use in rendering a computer graphics imageof claim 1, wherein the marching comprises selecting a set of volumeelements comprising a plurality of elements, of at least two differentsizes, and a spatial arrangement of the set of volume elements relativeto an origin of the ray provides progressively larger volume elementswith increasing distance from the ray origin.
 14. A method for use inrendering a computer graphics image from 3-D scene data comprising oneor more geometrical objects, comprising: providing in a computergraphics processing system a hierarchical acceleration structurecomprising elements that each bound a respective portion of a 3-D scenedefined by said 3-D scene data, and which collectively bound the one ormore objects; providing in said computer graphics processing system a3-D grid of volume elements in the 3-D scene, each volume elementassociated with data representative of light energy propagating fromthat volume element; identifying a point on a surface of an object inthe 3-D scene for which shading information is to be provided; definingone or more rays to be emitted from the point, each ray including arespective spreading factor; determining a respective threshold distancefor each of the rays based on the spreading factor for that ray; whereinthe threshold specifies a range, ending with a maximum distance from thepoint; tracing, by a processor, each of the one or more rays in the 3-Dscene by traversing the hierarchical acceleration structure to identifya respective closest intersection, if any, that is within the maximumdistance defined by the threshold distance from the point on thesurface, and shading such intersection to produce shading information;for each ray, if no intersection was identified within the maximumdistance, then sampling the 3-D grid of volume elements that are withina conic section of the ray defined by a direction of the ray and thespreading factor and outside of the maximum distance from the point onthe surface; for each ray, if the closest intersection is in the rangeof the threshold, then blending shading information produced for thedetected intersection with information from samples taken of the 3-Dgrid of volume elements that are within the range of the threshold; andproducing shading information for the point on the surface, using one ormore of shading information produced for a detected intersection andsampled light information from the 3-D grid of volume elements, whereinsaid shading information is used in rendering said computer graphicsimage.
 15. The method of rendering a computer graphics image of claim14, further comprising determining lighting characteristics of surfacesin said 3-D scene by selecting a plurality of sizes of the volumeelements using the spreading factor and a distance from the origin ofthe ray and the respective location of the volume element for use inproducing said shading information.
 16. A method for use in rendering acomputer graphics image from 3-D scene data comprising one or moregeometrical objects, comprising: identifying a point on a surface of anobject in a 3-D scene defined by said 3-D scene data for which lightinginformation is to be determined; performing, by a processor, one or morepoint sampling operations within a maximum distance from the point alongone or more directions, to produce point sampling data; performing, by aprocessor, one or more volume sampling operations in a 3-D grid ofvolume elements in the 3-D scene, each volume element associated withdata representative of light energy propagating through a surface ofthat volume element, farther from the point along the direction than themaximum distance; and using the point sampling data and data obtainedfrom the volume sampling operations to produce a rendering output forthe point, by blending the point sampling data and the data obtainedfrom the volume sampling operations if a closest intersection is withina range of a threshold distance from the point; wherein said renderingoutput is used in rendering said computer graphics image.
 17. The methodfor use in rendering a computer graphics claim 16, further comprisingdefining a transition zone at an intermediate distance from the point,in which both the point sampling operations and the volume samplingoperations are performed.
 18. The method for use in rendering a computergraphics claim 16, wherein each of the point sampling operationscomprises tracing a ray in a direction, originating from the point, todetermine whether the ray intersects geometry in the 3-D scene withinthe maximum distance.
 19. The method for use in rendering a computergraphics claim 16, wherein the maximum distance is inversely related toa spreading factor that defines a relationship between distance from thepoint and an area of a section located in the 3-D scene that is used todetermine which volume elements are to be sampled for each volumesampling operation.